/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.furb.trabalhoFinal.DAO;

import br.com.furb.trabalhoFinal.Exceptions.DAOException;
import br.com.furb.trabalhoFinal.Utils.FileManager;
import br.com.furb.trabalhoFinal.model.Colaborador;
import java.util.HashMap;
import java.util.Map;

/**
 *
 * @author Jonathan
 */
public class DAOColaborador implements DAOGenerico {

  private Map<Integer, Colaborador> colaboradores;

  @Override
  public void salvar(Object obj) throws DAOException {
    if (obj instanceof Colaborador) {
      obj = (Colaborador) obj;
      getColaboradores().put(((Colaborador) obj).getNumeroCadastro(), (Colaborador) obj);
      FileManager.serializeObject(getColaboradores(), Colaborador.class);
    } else {
      throw new DAOException("Tentativa de salvar algo que não é um colaborador");
    }
  }

  @Override
  public void excluir(int numeroCadastro) {
    getColaboradores().remove(numeroCadastro);
    FileManager.serializeObject(getColaboradores(), Colaborador.class);
  }

  @Override
  public Colaborador carregar(int codigo) {
    return getColaboradores().get(codigo);
  }

  public Map<Integer, Colaborador> getColaboradores() {
    if (colaboradores == null) {
      colaboradores = (Map<Integer, Colaborador>) FileManager.getSerializedObject(Colaborador.class);
      if (colaboradores == null) {
        colaboradores = new HashMap<Integer, Colaborador>();
      }
    }
    return colaboradores;
  }

  public Map<Integer, Colaborador> getColaboradoresByNomeAcesso(String userName){
    Map<Integer, Colaborador> ret = new HashMap<>();
    for(Colaborador colaborador: getColaboradores().values()){
      String[] nomes = colaborador.getNome().split(" ");
      if((nomes[0]+"."+nomes[nomes.length - 1]).equals(userName)){
        ret.put(colaborador.getNumeroCadastro(), colaborador);
      }
    }
    return ret;
  }
}
